package com.lib.torment.androidlib.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.lib.torment.androidlib.interfaces.IAdapterConstraint;
import com.lib.torment.androidlib.widget.networkview.LoadingNetWorkView;

import java.util.List;

/**
 * 基本适配器<br/>
 * 可以维护初始化加载的操作以及更新视图的操作
 * Created by torment on 16-7-15.
 */
public abstract class AppAdapter<T> extends BaseQuickAdapter<T> {
    protected Context mBaseContext;

    public AppAdapter(Context context, int layoutResId, List<T> data) {
        this(context, layoutResId, data, true);
    }

    /**
     * @param context         上下文
     * @param layoutResId     布局资源
     * @param data            源数据
     * @param isOpenEmptyView 是否开启空布局
     */
    public AppAdapter(Context context, int layoutResId, List<T> data, boolean isOpenEmptyView) {
        super(layoutResId, data);
        mBaseContext = context;
        // 设置空布局加载的样式
        if (isOpenEmptyView) {
            setLoadingDataView();
        }
        // openLoadAnimation(); // 开启动画
    }

    /**
     * 加载一张加载中的布局<br/>
     * 其子类只需重写这个方法，做一些自己的业务逻辑
     */
    protected void setLoadingDataView() {
        LoadingNetWorkView loadingView = new LoadingNetWorkView(mBaseContext, getEmptyView());
        setEmptyView(loadingView);
    }

    @Override
    public View getEmptyView() {
        View emptyView = super.getEmptyView();
        if (emptyView == null) {
            FrameLayout layout = new FrameLayout(mBaseContext);
            FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            layout.setLayoutParams(lp);
            emptyView = layout;
        }
        return emptyView;
    }

    public void setEmptyView(IAdapterConstraint impl) {
        setEmptyView(impl.getView());
    }
}